package com.aiwiown.face.domain;

import com.aiwiown.face.ApiObject;
import com.aiwiown.face.domain.params.ApiParamType;
import com.aiwiown.face.internal.mapping.ApiField;

import java.io.File;

/**
 * @ClassName : FaceDetectModel
 * @Description : 人脸检测和人脸分析
 * @Author : dbin0123
 * @Date: 2020-03-14 16:06
 */

public class FaceSearchModel extends ApiObject {


    private static final long serialVersionUID = 4440377675642881092L;
    /**
     * 进行搜索的目标人脸的 face_token，优先使用该参数
     */
    @ApiField("face_token")
    private String faceToken;
    /**
     * 目标人脸所在的图片的 URL
     */
    @ApiField("image_url")
    private String imageUrl;
    /**
     * 目标人脸所在的图片，二进制文件，需要用 post multipart/form-data 的方式上传。
     */
    @ApiField(value = "image_file", paramType = ApiParamType.FILE)
    private File imageFile;
    /**
     * base64 编码的二进制图片数据
     * 如果同时传入了 image_url、image_file 和 image_base64 参数，本API使用顺序为 image_file 优先，image_url 最低。
     */
    @ApiField("image_base64")
    private String imageBase64;

    /**
     * 用来搜索的 FaceSet 的标识
     */
    @ApiField("faceset_token")
    private String facesetToken;

    /**
     * 用户自定义的 FaceSet 标识
     */
    @ApiField("outer_id")
    private String outerId;

    /**
     * 控制返回比对置信度最高的结果的数量。合法值为一个范围 [1,5] 的整数。默认值为 1
     */
    @ApiField("return_result_count")
    private Integer returnResultCount;

    /**
     * 仅正式 API Key 可以使用
     * 当传入图片进行人脸检测时，是否指定人脸框位置进行检测。
     * 如果此参数传入值为空，或不传入此参数，则不使用此功能。本 API 会自动检测图片内所有区域的所有人脸。
     * 如果使用正式 API Key 对此参数传入符合格式要求的值，则使用此功能。需要传入一个字符串代表人脸框位置，系统会根据此坐标对框内的图像进行人脸检测，以及人脸关键点和人脸属性等后续操作。系统返回的人脸矩形框位置会与传入的 face_rectangle 完全一致。对于此人脸框之外的区域，系统不会进行人脸检测，也不会返回任何其他的人脸信息。
     * 参数规格：四个正整数，用逗号分隔，依次代表人脸框左上角纵坐标（top），左上角横坐标（left），人脸框宽度（width），人脸框高度（height）。例如：70,80,100,100
     * 注：只有在传入 image_url、image_file 和 image_base64 三个参数中任意一个时，本参数才生效。
     */
    @ApiField("face_rectangle")
    private String faceRectangle;

    public String getFaceToken() {
        return faceToken;
    }

    public void setFaceToken(String faceToken) {
        this.faceToken = faceToken;
    }

    public String getImageUrl() {
        return imageUrl;
    }

    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }

    public File getImageFile() {
        return imageFile;
    }

    public void setImageFile(File imageFile) {
        this.imageFile = imageFile;
    }

    public String getImageBase64() {
        return imageBase64;
    }

    public void setImageBase64(String imageBase64) {
        this.imageBase64 = imageBase64;
    }

    public String getFacesetToken() {
        return facesetToken;
    }

    public void setFacesetToken(String facesetToken) {
        this.facesetToken = facesetToken;
    }

    public String getOuterId() {
        return outerId;
    }

    public void setOuterId(String outerId) {
        this.outerId = outerId;
    }

    public Integer getReturnResultCount() {
        return returnResultCount;
    }

    public void setReturnResultCount(Integer returnResultCount) {
        this.returnResultCount = returnResultCount;
    }

    public String getFaceRectangle() {
        return faceRectangle;
    }

    public void setFaceRectangle(String faceRectangle) {
        this.faceRectangle = faceRectangle;
    }
}
